Many computer systems utilize a firmware program stored in non-volatile memory to assist with the start up of the computer and to enable communication with low level hardware. For instance, many personal computer systems utilize a basic input/output system (BIOS) and/or additional firmware that includes program code containing fundamental routines that help transfer information between elements within the computer. In many computer systems, the firmware is stored as groups of memory blocks in one or more non-volatile memory devices. From time to time, it may be necessary to update firmware such as, for instance, when a newer version of the firmware is available. It may also be necessary to recover a previous firmware version, such as when the current firmware is somehow corrupted.
The updating of firmware previously occurred in an automated fashion. This may occur at the behest of a management agent installed on the computer or on another computer connected via a network, or at the behest of the firmware itself, for example, when code determines that the firmware has been corrupted and a recovery may be required. A user may alternatively invoke a firmware update using a special keyboard combination, a jumper or switch, or some other form of manual intervention. However, once invoked, an update proceeds without permitting user input or providing feedback on progress.
The delay inherent in a firmware update can lead to the computer appearing to be frozen, with no screen updates and no response from input devices such as an attached keyboard. This delay prompted many users to power down their computers thinking the system had frozen or crashed. Powering down a computer during firmware update may cause unintended problems, or at least needlessly slow progress. In addition to a lack of feedback, existing update and recovery processes do not permit a user to configure the process, to cancel or rollback an update, or to otherwise control the process.
It is with respect to these considerations and that the embodiments of the present invention have been made.